SQL API
1. 개요
1. 개요
SQL API는 애플리케이션 프로그래밍 인터페이스(API)의 한 종류로, SQL 문을 사용하여 데이터베이스와 상호 작용할 수 있도록 해주는 인터페이스이다. 주로 애플리케이션 소프트웨어가 데이터베이스 관리 시스템(DBMS)에 SQL 쿼리를 전송하고, 그 결과를 받아오는 데 사용된다. 이는 웹 개발과 백엔드 개발 분야에서 데이터를 저장, 조회, 수정, 삭제하는 핵심적인 통로 역할을 한다.
대표적인 SQL API의 예로는 자바 언어용 JDBC(Java Database Connectivity)와 다양한 플랫폼에서 사용 가능한 ODBC(Open Database Connectivity)가 있다. 이러한 API들은 특정 데이터베이스 벤더에 종속되지 않고 표준화된 방식으로 접근할 수 있도록 설계되어, 개발자가 MySQL, PostgreSQL, 오라클 데이터베이스 등 다양한 DBMS를 유사한 방법으로 조작할 수 있게 한다.
SQL API의 일반적인 작동 방식은 먼저 애플리케이션이 API를 통해 데이터베이스에 연결을 설정하는 것으로 시작한다. 연결이 성립되면 애플리케이션은 SELECT, INSERT, UPDATE, DELETE 등의 SQL 문을 API를 경유하여 데이터베이스 서버로 전송한다. 데이터베이스는 쿼리를 처리한 후, 그 결과를 결과 집합(ResultSet)이나 실행 상태 정보 같은 형태로 동일한 API 경로를 통해 애플리케이션에 반환한다.
이러한 매커니즘은 애플리케이션 로직과 데이터 저장소를 분리하는 데 기여하며, 데이터 접근 계층을 표준화함으로써 유지보수성과 이식성을 높인다. 결과적으로 개발자는 데이터베이스의 내부 구조나 네트워크 프로토콜의 복잡성보다는 비즈니스 로직과 SQL 쿼리 자체에 더 집중할 수 있게 된다.
2. 동작 원리
2. 동작 원리
SQL API의 동작 원리는 기본적으로 클라이언트-서버 모델을 따르며, 애플리케이션과 데이터베이스 관리 시스템(DBMS) 사이의 중간 계층 역할을 한다. 애플리케이션은 SQL API를 통해 데이터베이스 서버와의 연결을 설정하고, SQL 문을 전송하며, 서버로부터 반환된 결과 집합(ResultSet)을 처리하는 일련의 과정을 수행한다. 이 과정은 일반적으로 연결 생성, 쿼리 실행, 결과 처리, 연결 종료의 단계로 이루어진다.
구체적으로, 개발자는 JDBC나 ODBC와 같은 SQL API를 사용하여 특정 데이터베이스에 맞는 드라이버를 로드하고, 연결 문자열을 이용해 데이터베이스 서버와의 세션을 연다. 연결이 성립되면, 애플리케이션은 Statement나 PreparedStatement 객체를 생성하여 SELECT, INSERT, UPDATE, DELETE 등의 SQL 쿼리를 데이터베이스 서버로 전송한다. 서버는 이 쿼리를 구문 분석하고 실행하여 결과를 생성한 후, 클라이언트 측 SQL API에 결과 집합이나 실행 성공 여부와 같은 응답을 반환한다.
애플리케이션은 반환된 결과 집합을 순회하며 각 행의 데이터를 추출하여 비즈니스 로직에 활용한다. 모든 데이터베이스 작업이 완료되면, 리소스를 효율적으로 관리하기 위해 결과 집합과 Statement 객체를 명시적으로 닫고, 마지막으로 데이터베이스 연결을 종료하는 것이 일반적인 패턴이다. 이처럼 SQL API는 복잡한 네트워크 통신과 프로토콜 변환을 추상화하여, 개발자가 표준화된 방식으로 다양한 데이터베이스와 상호작용할 수 있도록 돕는다.
3. 주요 기능
3. 주요 기능
3.1. 데이터 조회
3.1. 데이터 조회
SQL API의 핵심 기능 중 하나는 데이터베이스에 저장된 정보를 읽어오는 데이터 조회이다. 애플리케이션은 SQL API를 통해 데이터베이스 관리 시스템(DBMS)에 연결한 후, SELECT 문을 포함한 SQL 쿼리를 전송한다. 이 쿼리는 특정 테이블에서 조건에 맞는 행과 열을 필터링하거나, 여러 테이블을 조인하여 복합적인 데이터를 추출하는 등의 작업을 지시한다.
데이터베이스는 전달받은 쿼리를 처리한 후, 그 결과를 결과 집합(ResultSet)이라는 형태로 SQL API를 통해 애플리케이션에 반환한다. 이 결과 집합은 테이블 형태의 데이터 모음으로, 애플리케이션 코드 내에서 순회하며 각 행의 데이터를 읽어올 수 있다. JDBC나 ODBC와 같은 표준 API는 이러한 결과 집합을 처리하기 위한 표준화된 인터페이스와 메서드를 제공하여, 개발자가 특정 데이터베이스 벤더의 내부 구현 세부사항에 구애받지 않고 데이터를 조회할 수 있게 한다.
데이터 조회 기능은 단순한 전체 조회부터 매우 복잡한 질의까지 지원한다. 조건부 필터링(WHERE), 그룹화 및 집계(GROUP BY, HAVING), 정렬(ORDER BY), 그리고 페이징 처리(LIMIT, OFFSET) 등 표준 SQL의 대부분의 조회 기능을 활용할 수 있다. 이를 통해 백엔드 개발자는 웹 개발에서 사용자 요청에 맞는 동적 콘텐츠를 생성하거나, 데이터 분석 도구에 필요한 원천 데이터를 제공하는 등 다양한 비즈니스 로직을 구현한다.
3.2. 데이터 조작
3.2. 데이터 조작
SQL API의 데이터 조작 기능은 데이터베이스 내 저장된 데이터의 내용을 변경하는 핵심 작업을 담당한다. 이는 데이터 조회와 함께 SQL API의 가장 기본적이고 빈번하게 사용되는 기능 중 하나이다. 애플리케이션은 JDBC나 ODBC와 같은 SQL API를 통해 데이터베이스 관리 시스템에 특정 SQL 문을 전송하여 데이터를 추가, 수정, 삭제한다.
주요 데이터 조작 작업은 크게 세 가지로 구분된다. 첫째, INSERT 문을 사용하여 새로운 레코드를 테이블에 추가하는 작업이다. 둘째, UPDATE 문을 사용하여 기존 레코드의 특정 필드 값을 조건에 맞게 변경하는 작업이다. 셋째, DELETE 문을 사용하여 테이블에서 특정 조건을 만족하는 레코드를 제거하는 작업이다. 이러한 모든 작업은 애플리케이션 로직에 의해 SQL API를 호출함으로써 수행된다.
데이터 조작 작업을 수행할 때는 데이터의 무결성을 유지하는 것이 매우 중요하다. 이를 위해 SQL API는 트랜잭션 처리를 지원하여 여러 개의 조작 명령문을 하나의 논리적 작업 단위로 묶을 수 있게 한다. 예를 들어, 은행 계좌 이체와 같이 한 계좌에서 금액을 빼고 다른 계좌에 더하는 두 가지 UPDATE 작업은 하나의 트랜잭션으로 처리되어 모두 성공하거나 모두 실패하도록 보장받는다.
효율적이고 안전한 데이터 조작을 위해서는 적절한 WHERE 절을 사용하여 대상 레코드를 정확히 지정해야 하며, 매개 변수화된 쿼리를 활용하여 SQL 삽입 공격과 같은 보안 위협으로부터 애플리케이션을 보호해야 한다. 백엔드 개발에서는 이러한 SQL API의 데이터 조작 기능을 기반으로 사용자 요청에 따른 데이터 생성, 갱신, 삭제 비즈니스 로직을 구현하게 된다.
3.3. 스키마 관리
3.3. 스키마 관리
SQL API의 스키마 관리 기능은 애플리케이션이 데이터베이스의 구조를 동적으로 정의하고 수정할 수 있게 해준다. 이를 통해 개발자는 데이터베이스 내 테이블, 인덱스, 뷰, 제약 조건 등의 생성, 변경, 삭제 작업을 프로그램 코드 내에서 직접 수행할 수 있다. 이는 데이터베이스 마이그레이션이나 애플리케이션의 초기 설정 과정에서 특히 유용하게 활용된다.
주요 관리 작업에는 CREATE TABLE, ALTER TABLE, DROP TABLE과 같은 데이터 정의 언어(DDL) 문을 실행하는 것이 포함된다. 예를 들어, 새로운 기능을 배포하기 위해 테이블에 컬럼을 추가하거나, 성능 최적화를 위해 인덱스를 생성하는 작업을 SQL API를 통해 자동화할 수 있다. JDBC나 ODBC와 같은 API는 이러한 DDL 명령어를 데이터베이스 관리 시스템(DBMS)에 전달하고 실행 결과를 반환하는 인터페이스를 제공한다.
이러한 스키마 관리 기능은 소프트웨어 개발 수명 주기 전반에 걸쳐 데이터베이스 구조의 버전 관리를 가능하게 하며, 지속적 통합 및 지속적 배포(CI/CD) 파이프라인과 통합되는 경우가 많다. 결과적으로, 애플리케이션의 코드 베이스와 데이터베이스 스키마의 변경 사항을 함께 관리하고 조율하는 데 핵심적인 역할을 한다.
3.4. 트랜잭션 처리
3.4. 트랜잭션 처리
SQL API를 통한 트랜잭션 처리는 데이터의 무결성과 일관성을 보장하는 핵심 기능이다. 트랜잭션은 데이터베이스 상태를 변화시키는 하나의 논리적 작업 단위로, 여러 개의 SQL 문(예: INSERT, UPDATE, DELETE)을 포함할 수 있다. SQL API는 애플리케이션 코드에서 이러한 트랜잭션의 시작, 제어, 완료를 관리할 수 있는 명시적인 메서드나 함수를 제공한다. 대표적으로 JDBC에서는 setAutoCommit(false)를 호출하여 자동 커밋을 비활성화한 후, commit() 또는 rollback() 메서드를 사용하여 트랜잭션을 수동으로 제어한다.
트랜잭션 처리의 핵심 원칙은 ACID 속성이다. SQL API는 데이터베이스 시스템과 협력하여 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 구현한다. 예를 들어, 은행 계좌 이체 작업에서 출금과 입금 두 연산은 하나의 트랜잭션으로 묶여, 둘 다 성공하거나 둘 다 실패하는 원자성을 만족해야 한다. SQL API를 사용하면 개발자는 트랜잭션 경계를 명확히 정의하고, 오류 발생 시 이전 상태로 롤백하는 로직을 쉽게 구현할 수 있다.
또한, SQL API는 트랜잭션 격리 수준을 설정하는 기능도 제공한다. 이는 동시에 실행되는 여러 트랜잭션이 서로에게 미치는 영향을 제어하는 매커니즘이다. JDBC나 ODBC와 같은 API는 데이터베이스 드라이버를 통해 특정 DBMS가 지원하는 격리 수준(예: READ COMMITTED, SERIALIZABLE)을 설정할 수 있는 인터페이스를 노출한다. 이를 통해 데이터 정합성과 시스템 성능 사이의 균형을 애플리케이션 요구사항에 맞게 조정할 수 있다.
4. 구현 방식
4. 구현 방식
4.1. REST API
4.1. REST API
SQL API를 구현하는 가장 일반적인 방식 중 하나는 REST API를 활용하는 것이다. REST는 HTTP 프로토콜을 기반으로 하는 아키텍처 스타일로, 자원을 URI로 식별하고 HTTP 메서드를 통해 해당 자원에 대한 조작을 정의한다. SQL API를 RESTful API로 설계할 경우, 데이터베이스의 테이블이나 뷰를 하나의 자원으로 간주하여 GET, POST, PUT, DELETE 등의 메서드를 사용해 CRUD 작업을 수행할 수 있게 된다.
구체적인 동작 방식은 애플리케이션 클라이언트가 HTTP 요청을 통해 서버의 특정 엔드포인트에 접근하는 형태를 가진다. 예를 들어, /users라는 엔드포인트에 GET 요청을 보내면 사용자 목록을 조회하는 SELECT 쿼리가 실행되고, 그 결과가 JSON이나 XML 같은 구조화된 형식으로 응답된다. 반대로 새로운 데이터를 생성하려면 /users에 POST 요청과 함께 데이터를 본문에 담아 전송하면, 이는 서버 측에서 INSERT 문으로 변환되어 실행된다.
이 방식의 주요 장점은 HTTP의 보편성으로 인한 높은 상호운용성과 간결함에 있다. 웹 브라우저, 모바일 앱, 서버 사이드 애플리케이션 등 다양한 클라이언트가 표준 HTTP 클라이언트 라이브러리를 사용해 쉽게 통신할 수 있다. 또한, 캐싱, 로드 밸런싱, 보안 등 웹 인프라의 기존 기술과 도구를 그대로 활용할 수 있어 개발 및 운영이 비교적 용이하다.
그러나 REST API 기반 SQL API는 몇 가지 한계도 존재한다. 복잡한 조인이나 중첩된 하위 쿼리를 표현하기에는 URI와 HTTP 메서드만으로는 제한적일 수 있어, 필터링이나 정렬 조건을 전달하기 위해 복잡한 쿼리 파라미터를 사용해야 할 수 있다. 또한, JDBC나 ODBC 같은 전통적인 데이터베이스 연결 방식에 비해 네트워크 오버헤드가 더 클 수 있으며, 각 작업이 별도의 HTTP 요청으로 이루어지므로 트랜잭션 경계를 관리하는 것이 더 복잡해질 수 있다.
4.2. GraphQL
4.2. GraphQL
GraphQL은 SQL API의 구현 방식 중 하나로, 페이스북에서 개발한 쿼리 언어이자 런타임이다. 기존의 REST API가 여러 엔드포인트에서 고정된 데이터 구조를 반환하는 방식과 달리, GraphQL은 단일 엔드포인트에 클라이언트가 필요로 하는 데이터의 구조와 필드를 정확히 명시한 쿼리를 전송하여 응답을 받는다. 이는 프론트엔드 개발자가 백엔드의 데이터 구조에 대한 깊은 이해 없이도 필요한 데이터만 효율적으로 요청하고 수신할 수 있게 한다.
GraphQL을 SQL API의 맥락에서 보면, 클라이언트가 데이터베이스에 직접 SQL을 작성하는 대신, GraphQL 스키마에 정의된 타입과 리졸버 함수를 통해 간접적으로 데이터에 접근하는 방식으로 동작한다. 서버 측에서는 GraphQL 쿼리를 받아 해당하는 리졸버를 실행하며, 이 리졸버 내부에서 실제 데이터베이스 관리 시스템에 대한 SQL 쿼리가 생성되고 실행된다. 따라서 GraphQL 자체가 SQL을 대체하는 것이 아니라, 클라이언트와 실제 데이터 소스 사이의 추상화 계층으로 기능한다.
이 방식의 주요 장점은 데이터 과다페칭과 과소페칭 문제를 해결한다는 점이다. 클라이언트는 정확히 필요한 필드만 요청할 수 있어 네트워크 대역폭을 절약하고, 복잡한 객체 그래프를 단일 요청으로 가져올 수 있어 API 호출 횟수를 크게 줄일 수 있다. 또한 스키마와 타입 시스템을 통해 API의 명세가 명확해지고, API 문서화 도구와의 연동이 용이하다.
반면, GraphQL 구현에는 고려해야 할 단점도 존재한다. 단일 요청으로 매우 복잡한 중첩 쿼리가 가능하기 때문에, 잘못 설계된 쿼리로 인해 데이터베이스에 과도한 부하를 주는 "N+1 쿼리 문제"가 발생할 수 있다. 이를 해결하기 위해서는 데이터 로더와 같은 패턴을 적용하여 쿼리를 최적화해야 한다. 또한 캐싱 메커니즘이 표준화된 REST API에 비해 복잡하며, 파일 업로드와 같은 기능은 별도의 확장을 필요로 한다.
4.3. gRPC
4.3. gRPC
gRPC는 구글이 개발한 고성능 오픈 소스 원격 프로시저 호출 프레임워크로, SQL API의 구현 방식 중 하나로 활용된다. HTTP/2 프로토콜을 기반으로 하여 효율적인 이진 메시지 전송을 지원하며, 프로토콜 버퍼를 기본 인터페이스 정의 언어로 사용한다. 이를 통해 클라이언트와 서버 간에 강력한 계약을 정의하고, 스트리밍을 포함한 다양한 통신 패턴을 구현할 수 있다.
SQL API를 gRPC로 구현할 경우, 데이터베이스에 수행할 작업(예: ExecuteQuery, ExecuteUpdate)과 그에 필요한 데이터 구조(예: QueryRequest, ResultSet)를 .proto 파일에 명확히 정의한다. 이렇게 생성된 스텁 코드를 통해 애플리케이션은 네트워크 통신의 복잡성을 추상화하고, 마치 로컬 함수를 호출하듯이 원격의 데이터베이스 서버에 SQL 쿼리를 전송하고 결과를 받아올 수 있다.
이 방식은 특히 마이크로서비스 아키텍처 환경에서 두드러진 장점을 보인다. 서비스 간의 통신이 빈번하고 지연 시간이 중요한 분산 시스템에서, gRPC는 낮은 오버헤드와 높은 처리량을 제공한다. 또한, 다양한 프로그래밍 언어를 위한 코드를 자동 생성할 수 있어, 자바, 파이썬, 고 언어 등 다른 언어로 작성된 서비스들이 동일한 강타입 인터페이스를 통해 데이터베이스에 접근할 수 있게 한다.
그러나 gRPC는 기본적으로 이진 포맷을 사용하므로, REST API에 비해 요청과 응답 내용을 인간이 직접 읽거나 디버깅하기는 어렵다. 또한, 웹 브라우저와 같은 환경에서의 직접적인 지원이 제한될 수 있어, 대외적으로 공개되는 API보다는 내부 서비스 간의 통신, 특히 데이터 집약적인 백엔드 시스템 간의 효율적인 SQL 명령 전달에 더 적합한 구현 방식으로 평가받는다.
5. 장단점
5. 장단점
5.1. 장점
5.1. 장점
SQL API의 가장 큰 장점은 개발자가 익숙하고 강력한 SQL 언어를 그대로 활용하여 데이터베이스와 상호작용할 수 있다는 점이다. 이는 애플리케이션 로직에서 복잡한 데이터 접근 코드를 직접 작성할 필요 없이, 선언적인 SQL 문으로 데이터를 조회하거나 조작할 수 있게 해준다. 결과적으로 개발 생산성을 크게 향상시키고, 데이터 중심 애플리케이션을 구축하는 데 걸리는 시간을 단축한다.
또한, SQL API는 데이터베이스 벤더에 대한 추상화 계층을 제공한다는 장점이 있다. JDBC나 ODBC와 같은 표준화된 API를 사용하면, 애플리케이션 코드는 특정 DBMS의 저수준 프로토콜이나 네이티브 드라이버에 종속되지 않는다. 이는 MySQL, PostgreSQL, 오라클 데이터베이스 등 서로 다른 데이터베이스 시스템 간의 전환을 상대적으로 용이하게 만들어 주며, 시스템의 유연성과 이식성을 보장한다.
마지막으로, SQL API는 데이터베이스 서버의 모든 기능과 최적화 기회를 활용할 수 있게 한다. 복잡한 조인 연산, 집계 함수, 트랜잭션 제어, 저장 프로시저 호출 등 데이터베이스 엔진이 제공하는 고급 기능을 SQL 쿼리를 통해 직접 활용할 수 있다. 이는 애플리케이션 서버에서 처리하기 어려운 대규모 데이터 처리나 복잡한 비즈니스 로직을 데이터베이스 측에 효율적으로 위임함으로써 전체 시스템 성능을 최적화하는 데 기여한다.
5.2. 단점
5.2. 단점
SQL API의 주요 단점 중 하나는 SQL 문법 자체의 복잡성과 학습 곡선이다. 관계형 데이터베이스에 특화된 SQL 쿼리를 작성하려면 조인, 서브쿼리, 집계 함수 등에 대한 깊은 이해가 필요하며, 이는 개발자에게 부담이 될 수 있다. 또한, 직접적인 SQL 쿼리 문자열을 애플리케이션 코드 내에 작성하는 방식은 인젝션 공격에 취약할 수 있어, 입력값 검증과 매개변수화된 쿼리 사용과 같은 추가적인 보안 조치가 필수적이다.
다른 단점은 데이터베이스 벤더 간의 호환성 문제다. JDBC나 ODBC 같은 표준 인터페이스가 존재하더라도, 각 데이터베이스 관리 시스템(DBMS)마다 지원하는 SQL 방언이나 고유 기능, 데이터 타입이 상이할 수 있다. 이로 인해 특정 DBMS에 최적화된 쿼리를 작성하면 애플리케이션의 이식성이 떨어지고, 데이터베이스를 교체할 때 상당한 코드 수정이 필요할 수 있다.
성능 측면에서도 고려할 점이 있다. 비효율적으로 작성된 SQL 쿼리는 데이터베이스 서버에 과도한 부하를 줄 수 있으며, 네트워크 대역폭을 많이 소모하는 대량의 결과 집합을 반복적으로 가져오는 경우 애플리케이션 응답 속도가 저하될 수 있다. 또한, 객체 관계 매핑(ORM) 도구에 비해 생산성이 낮다는 지적도 있다. 반복적인 CRUD 작업을 수행할 때마다 상세한 SQL 문을 작성하고, 결과를 객체로 변환하는 보일러플레이트 코드가 많이 필요하기 때문이다.
6. 주요 사용 사례
6. 주요 사용 사례
SQL API는 다양한 산업과 애플리케이션 분야에서 데이터베이스와의 핵심적인 연결 고리 역할을 한다. 웹 개발 분야에서는 백엔드 서버가 SQL API를 활용해 사용자 로그인 정보를 검증하거나, 전자상거래 사이트의 상품 목록과 주문 내역을 데이터베이스에서 조회하여 프론트엔드에 제공하는 데 널리 사용된다. 또한, 모바일 애플리케이션에서 사용자의 개인화된 콘텐츠나 설정을 서버의 관계형 데이터베이스에 저장하고 불러오는 과정에도 필수적이다.
기업 환경에서는 ERP나 CRM과 같은 복잡한 비즈니스 애플리케이션이 SQL API를 통해 재고, 회계, 고객 데이터 등 방대한 정보를 체계적으로 관리한다. 데이터 분석 및 비즈니스 인텔리전스 도구들도 SQL API를 연결하여 데이터 웨어하우스나 운영 데이터베이스에서 직접 데이터 마이닝과 보고서 생성을 수행한다. 이는 실시간 의사결정을 지원하는 중요한 기반이 된다.
최근에는 클라우드 컴퓨팅 서비스의 확산과 함께, PaaS 형태로 제공되는 관계형 데이터베이스 서비스들(예: Amazon RDS, Google Cloud SQL)이 표준 SQL API를 노출하여, 개발자가 인프라 관리 부담 없이 익숙한 SQL과 JDBC, ODBC 드라이버를 사용해 애플리케이션을 개발할 수 있게 한다. 또한, 마이크로서비스 아키텍처에서 각 서비스가 전용 데이터베이스를 가지는 패턴에서도, 해당 서비스 내부에서는 SQL API를 통해 자체 데이터를 관리하는 방식이 일반적이다.
7. 관련 기술 및 도구
7. 관련 기술 및 도구
SQL API는 데이터베이스와의 상호작용을 가능하게 하는 핵심 인터페이스로서, 이를 구현하고 활용하는 데에는 다양한 관련 기술과 도구가 존재한다. 가장 대표적인 표준은 JDBC와 ODBC이다. JDBC는 자바 애플리케이션이 다양한 관계형 데이터베이스에 접속할 수 있도록 하는 API 표준이며, ODBC는 마이크로소프트가 주도한 언어 중립적인 데이터베이스 접속 인터페이스로, C나 C++ 같은 언어에서 널리 사용된다.
특정 프로그래밍 언어나 프레임워크에는 SQL API를 더욱 추상화하고 사용을 편리하게 만드는 ORM 도구들이 발전해 왔다. 예를 들어, 자바의 JPA와 그 구현체인 하이버네이트, 파이썬의 SQLAlchemy, .NET의 Entity Framework 등이 있다. 이러한 ORM 도구들은 개발자가 객체 지향적인 코드로 데이터를 조작하면 내부적으로 적절한 SQL 문을 생성하여 데이터베이스 관리 시스템에 전달하는 방식으로 동작한다.
또한, 클라우드 컴퓨팅 환경에서는 관계형 데이터베이스 서비스 자체가 관리형 SQL API를 제공하는 경우가 많다. 아마존 웹 서비스의 Amazon RDS, 마이크로소프트 애저의 Azure SQL Database, 구글 클라우드의 Cloud SQL 등이 대표적이다. 이러한 서비스들은 데이터베이스 엔진을 직접 관리할 부담 없이 표준 SQL 인터페이스를 통해 데이터를 저장하고 조회할 수 있는 환경을 제공한다.
최근에는 NoSQL 데이터베이스나 NewSQL 데이터베이스에서도 SQL 또는 SQL-like 쿼리 언어를 지원하는 API를 제공하는 추세이다. 예를 들어, 아파치 카산드라의 CQL이나 구글 스패너가 이에 해당한다. 이는 개발자들이 익숙한 SQL 문법의 편리함을 새로운 데이터베이스 패러다임에서도 활용할 수 있도록 하기 위한 것이다.
